/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.siseventos.managed;

import br.siseventos.dao.da.TipoLocalDAO;
import br.siseventos.model.TdTipoLocal;
import br.siseventos.view.util.CallbackHelper;
import br.siseventos.view.util.MessageHelper;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;



/**
 *
 * @author Michel
 */
@ManagedBean(name = "tipoLocalBean")
@SessionScoped
public class TipoLocalBean {
    //Campos

    private String nome;
    private String descricao;
    private TdTipoLocal tipoLocalSelecionado;
    private TipoLocalDAO daoTipoLocal;
    private List<TdTipoLocal> tipoLocal;

    //Construtor
    public TipoLocalBean() {
        //Inicializa o objeto Dao TipoLocal
        daoTipoLocal = new TipoLocalDAO();

        //Inicia a lista de locais
        repopularLista();
    }

    //Getters e Setters
    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }
    
    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the tipoLocalSelecionado
     */
    public TdTipoLocal getTipoLocalSelecionado() {
        return tipoLocalSelecionado;
    }

    /**
     * @param tipoLocalSelecionado the tipoLocalSelecionado to set
     */
    public void setTipoLocalSelecionado(TdTipoLocal tipoLocalSelecionado) {
        this.tipoLocalSelecionado = tipoLocalSelecionado;
    }

    /**
     * @return the tipoLocal
     */
    public List<TdTipoLocal> getTipoLocal() {
        return tipoLocal;
    }

    /**
     * @param tipoLocal the tipoLocal to set
     */
    public void setTipoLocal(List<TdTipoLocal> tiposLocal) {
        this.tipoLocal = tiposLocal;
    }

    /**
     * @return the daoTipoLocal
     */
    public TipoLocalDAO getDaoTipoLocal() {
        return daoTipoLocal;
    }

    /**
     * @param daoTipoLocal the daoTipoLocal to set
     */
    public void setDaoTipoLocal(TipoLocalDAO daoTipoLocal) {
        this.daoTipoLocal = daoTipoLocal;
    }

    //Actions e Listners
    public void cadastrarTipoLocal(ActionEvent e) {
        TdTipoLocal local = new TdTipoLocal(nome, descricao, null);
        try {
            //Inclusão de objeto
            daoTipoLocal.incluir(local);
            repopularLista();

            //Mostrar Mensagem
            MessageHelper.showGlobalMessage("Tipo de local cadastrado com sucesso!",
                    FacesMessage.SEVERITY_INFO);

            //Add callback
            CallbackHelper.addCallback("tipoLocalSalvo", true);

        } catch (Exception ex) {
            MessageHelper.showGlobalMessage("Erro ao cadastrar tipo de local!",
                    FacesMessage.SEVERITY_ERROR);

        }
    }

    public void excluirTipoLocal(ActionEvent e) {
        try {
            //Excluindo Tipo de Local
            daoTipoLocal.excluir(getTipoLocalSelecionado().getIdtTipoLocal());
            repopularLista();

            //Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Tipo de local excluído com sucesso!",
                    FacesMessage.SEVERITY_INFO);
        } catch (Exception ex) {

            //Mostrar mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao excluir tipo de local!",
                    FacesMessage.SEVERITY_ERROR);
        }

    }

        public void alterarTipoLocal(ActionEvent e) {

        try {
            //Excluindo o tipo de recurso selecionado
            daoTipoLocal.alterar(getTipoLocalSelecionado());
 
            //Atualizando dataTable
            repopularLista();

            //Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Tipo de local alterado com sucesso!", FacesMessage.SEVERITY_INFO);
            
            // Adicionando o parametro de callback
            CallbackHelper.addCallback("tipoLocalEditado", true);
        } catch (Exception ex) {
            MessageHelper.showGlobalMessage("Erro ao alterar tipo de local!", FacesMessage.SEVERITY_ERROR);
        }
    }

    //Util
    private void repopularLista() {
        tipoLocal = daoTipoLocal.consultarTodos();
    }    
}
